package cl.ncx.cmvrc.persistence.jpa.admin.entities;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import cl.ncx.cmvrc.util.Utils;

/**
 * SeguMenu entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "segu_menu", schema = "seguridad")
public class SeguMenu implements java.io.Serializable {

	// Fields

	private static final long serialVersionUID = 7794119755284399094L;
	private Integer menuCodigo;
	private SeguMenu seguMenu;
	private String menuDescripcion;
	private Integer menuPosicion;
	private String menuUrl;
	private SeguModulo seguModulo;
	private Set<SeguMenu> seguMenus = new HashSet<SeguMenu>(0);
	private Set<SeguMenuPerfil> seguMenuPerfils = new HashSet<SeguMenuPerfil>(0);

	// Constructors

	/** default constructor */
	public SeguMenu() {
	}

	/** minimal constructor */
	public SeguMenu(Integer menuCodigo, String menuDescripcion) {
		this.menuCodigo = menuCodigo;
		this.menuDescripcion = menuDescripcion;
	}

	/** full constructor */
	public SeguMenu(Integer menuCodigo, SeguMenu seguMenu, String menuDescripcion,
			Integer menuPosicion, String menuUrl, Set<SeguMenu> seguMenus,
			Set<SeguMenuPerfil> seguMenuPerfils) {
		this.menuCodigo = menuCodigo;
		this.seguMenu = seguMenu;
		this.menuDescripcion = menuDescripcion;
		this.menuPosicion = menuPosicion;
		this.menuUrl = menuUrl;
		this.seguMenus = seguMenus;
		this.seguMenuPerfils = seguMenuPerfils;
	}

	// Property accessors
	@Id
	@Column(name = "menu_codigo", unique = true, nullable = false)
	public Integer getMenuCodigo() {
		return this.menuCodigo;
	}

	public void setMenuCodigo(Integer menuCodigo) {
		this.menuCodigo = menuCodigo;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "menu_cod_padre")
	public SeguMenu getSeguMenu() {
		return this.seguMenu;
	}

	public void setSeguMenu(SeguMenu seguMenu) {
		this.seguMenu = seguMenu;
	}

	@Column(name = "menu_descripcion", nullable = false, length = 250)
	public String getMenuDescripcion() {
		return Utils.replaceSpecialChars(this.menuDescripcion);
	}

	public void setMenuDescripcion(String menuDescripcion) {
		this.menuDescripcion = menuDescripcion;
	}

	@Column(name = "menu_posicion")
	public Integer getMenuPosicion() {
		return this.menuPosicion;
	}

	public void setMenuPosicion(Integer menuPosicion) {
		this.menuPosicion = menuPosicion;
	}

	@Column(name = "menu_url")
	public String getMenuUrl() {
		return this.menuUrl;
	}

	public void setMenuUrl(String menuUrl) {
		this.menuUrl = menuUrl;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "seguMenu")
	public Set<SeguMenu> getSeguMenus() {
		return this.seguMenus;
	}

	public void setSeguMenus(Set<SeguMenu> seguMenus) {
		this.seguMenus = seguMenus;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "seguMenu")
	public Set<SeguMenuPerfil> getSeguMenuPerfils() {
		return this.seguMenuPerfils;
	}

	public void setSeguMenuPerfils(Set<SeguMenuPerfil> seguMenuPerfils) {
		this.seguMenuPerfils = seguMenuPerfils;
	}

	public void setSeguModulo(SeguModulo seguModulo) {
		this.seguModulo = seguModulo;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "modu_codigo")
	public SeguModulo getSeguModulo() {
		return seguModulo;
	}

}